1
Введение в PyTorch: почему тензоры важны
EvoClass-AI002Lecture 1
00:00

Введение в PyTorch: почему тензоры важны

PyTorch — это высоко гибкая, динамичная открытая платформа, которая пользуется популярностью для исследований в области глубокого обучения и быстрой разработки прототипов. В основе этой платформы лежит тензор — незаменимая структура данных. Это многомерный массив, предназначенный для эффективной обработки числовых операций, необходимых для моделей глубокого обучения, с автоматической поддержкой ускорения на ускорении на GPU automatically.

1. Понимание структуры тензора

Каждый вход, выход и параметр модели в PyTorch содержится в тензоре. Они выполняют ту же функцию, что и массивы NumPy, но оптимизированы для обработки на специализированном аппаратном обеспечении, таком как GPU, что делает их значительно более эффективными для масштабных операций линейной алгебры, требуемых нейронными сетями.

Ключевые свойства определяют тензор:

  • Форма: Определяет размеры данных, выраженные в виде кортежа (например, $4 \times 32 \times 32$ для пакета изображений).
  • Тип данных: Указывает числовой тип элементов, хранящихся в тензоре (например, torch.float32 для весов модели, torch.int64 для индексации).
  • Устройство: Указывает физическое местоположение аппаратного обеспечения: обычно 'cpu' или 'cuda' (NVIDIA GPU).
Динамический граф и автодифференцирование
PyTorch использует императивную модель выполнения, то есть вычислительный граф строится по мере выполнения операций. Это позволяет использовать встроенную систему автоматического дифференцирования, Autograd, чтобы отслеживать каждую операцию над тензором, при условии, что свойство requires_grad=True установлено, что позволяет легко рассчитывать градиенты во время обратного распространения.
fundamentals.py
TERMINALbash — pytorch-env
> Ready. Click "Run" to execute.
>
TENSOR INSPECTOR Live

Run code to inspect active tensors
Question 1
Which command creates a $5 \times 5$ tensor containing random numbers following a uniform distribution between 0 and 1?
torch.rand(5, 5)
torch.random(5, 5)
torch.uniform(5, 5)
torch.randn(5, 5)
Question 2
If tensor $A$ is on the CPU, and tensor $B$ is on the CUDA device, what happens if you try to compute $A + B$?
An error occurs because operations require tensors on the same device.
PyTorch automatically moves $A$ to the CUDA device and proceeds.
The operation is performed on the CPU, and the result is returned to the CPU.
Question 3
What is the most common data type (dtype) used for model weights and intermediate calculations in Deep Learning?
torch.float32 (single-precision floating point)
torch.int64 (long integer)
torch.bool
torch.float64 (double-precision floating point)
Challenge: Tensor Manipulation and Shape
Prepare a tensor for a specific matrix operation.
You have a feature vector $F$ of shape $(10,)$. You need to multiply it by a weight matrix $W$ of shape $(10, 5)$. For matrix multiplication (MatMul) to work, $F$ must be 2-dimensional.
Step 1
What should the shape of $F$ be before multiplication with $W$?
Solution:
The inner dimensions must match, so $F$ must be $(1, 10)$. Then $(1, 10) @ (10, 5) \rightarrow (1, 5)$.
Code: F_new = F.unsqueeze(0) or F_new = F.view(1, -1)
Step 2
Perform the matrix multiplication between $F_{new}$ and $W$ (shape $(10, 5)$).
Solution:
The operation is straightforward MatMul.
Code: output = F_new @ W or output = torch.matmul(F_new, W)
Step 3
Which method explicitly returns a tensor with the specified dimensions, allowing you to flatten the tensor back to $(50,)$? (Assume $F$ was $(5, 10)$ initially and is now flattened.)
Solution:
Use the view or reshape methods. The fastest way to flatten is often using -1 for one dimension.
Code: F_flat = F.view(-1) or F_flat = F.reshape(50)